---
title: SAIF.Services.WCF.UC4.Host overview
summary: Purpose, business context, and capability summary for the UC4 job-invocation WCF SOAP service host.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-22
---

# SAIF.Services.WCF.UC4.Host overview

This host exposes UC4 job-invocation capability to SOAP callers: it accepts a caller-supplied job name (with optional parameters, supplied as a JSON string, positional values, or key/value pairs), checks the job against an environment-scoped allow/deny rule list, and forwards allowed jobs to a downstream UC4 scheduling service under the service account's identity. `SAIF.Services.WCF.UC4.Host` is the only host in this repository that registers this service; no other host in `Framework.CoreServices.WCF` registers `UC4Service` or the `UC4` route.

## Purpose
- Accept a job-execution request from a caller, identifying the target environment either by a `UC4Environment` enum value (four obsolete operation forms) or by a `short` client id (four current operation forms).
- Gate the request against an environment-scoped allow/deny rule document (`uc4.rules`) before forwarding it.
- Forward allowed jobs, with their parameters expressed as JSON, positional values, or key/value pairs, to a downstream UC4 scheduling service, and map the downstream result onto the published `UC4Result` contract type.

## Business context

This host participates in job scheduling for the UC4 enterprise job scheduler. It is a pass-through policy-and-adaptation layer: the scheduling itself belongs entirely to the downstream service reached through `uc4coreapi.url`, and this host owns only the allow/deny gate and the protocol adaptation from SOAP to the packaged downstream client. It performs no database access and owns no persisted record.*

| Attribute | Value |
| --- | --- |
| Business domain | Job scheduling (UC4) |
| Owning team | Not determined from source |
| Data ownership | None — this host owns no persisted record; the `uc4.rules` allow/deny document lives in the environment settings service, and job execution state lives entirely in the downstream UC4 scheduling service |
| Criticality | Not determined from source |

## Capability summary

| Capability | Service class | Operations | Description |
| --- | --- | --- | --- |
| Job invocation, no parameters | `UC4Service` | [`ExecuteJob`](contracts/uc4-service.md#executejob) (obsolete), [`ExecuteJobWithClientId`](contracts/uc4-service.md#executejobwithclientid) | Invokes a job with no caller-supplied parameters |
| Job invocation, JSON parameters | `UC4Service` | [`ExecuteJobWithJson`](contracts/uc4-service.md#executejobwithjson) (obsolete), [`ExecuteJobWithJsonAndClientId`](contracts/uc4-service.md#executejobwithjsonandclientid) | Invokes a job with parameters supplied as a single JSON-encoded string |
| Job invocation, positional values | `UC4Service` | [`ExecuteJobWithValues`](contracts/uc4-service.md#executejobwithvalues) (obsolete), [`ExecuteJobWithValuesAndClientId`](contracts/uc4-service.md#executejobwithvaluesandclientid) | Invokes a job with parameters supplied as an ordered list, named `arg1`, `arg2`, and each subsequent positional argument name in call order |
| Job invocation, key/value parameters | `UC4Service` | [`ExecuteJobWithParameters`](contracts/uc4-service.md#executejobwithparameters) (obsolete), [`ExecuteJobWithParametersAndClientId`](contracts/uc4-service.md#executejobwithparametersandclientid) | Invokes a job with parameters supplied as named key/value pairs |

The eight operations are four job-invocation forms crossed with two identity modes (`UC4Environment` enum, `short` client id); SOAP has no overload resolution on the wire, so each is its own operation. The four enum-typed forms are `[Obsolete]` and delegate to their corresponding `AndClientId` operation — see [Business rules](business-rules.md#br-uc4-006-enum-operation-forms-are-obsolete).

## Message format

| Aspect | Finding |
| --- | --- |
| Message encoding | No `<endpoint>` is configured; `System.ServiceModel.Activation.ServiceHostFactory` applies WCF protocol mapping, which maps the `http` scheme to `basicHttpBinding` by default* |
| Serializer | Not determined from source — no binding or contract configuration was found to confirm `DataContractSerializer` versus `XmlSerializer`** |
| Message size limits | `maxReceivedMessageSize = 2147483647`; `maxStringContentLength = 5242880` — this bounds the largest single string element a caller may send, which directly constrains the JSON-parameter operations (`ExecuteJobWithJson`, `ExecuteJobWithJsonAndClientId`), since `jsonKeyValuePairs` is a single string element |
| Metadata document | `?wsdl` published (`<serviceMetadata httpGetEnabled="true"/>`, `Web.config`) |

## Related documentation
- [Index](index.md)
- [Architecture](architecture.md)
- [Activation and hosting](activation-hosting.md)
- [Operations](operations.md)
- [Faults and error pipeline](faults.md)
- [Authentication and authorization](authentication-authorization.md)
- [Dependencies](dependencies.md)
- [Configuration](configuration.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Operational runbook](operational-runbook.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- `src/WCF/SAIF.Services.WCF.UC4.Host/UC4Service.cs`
- `src/WCF/SAIF.Services.WCF.UC4.Host/Uc4Client.cs`
- `src/WCF/SAIF.Services.WCF.UC4.Host/Global.asax.cs`
- `src/WCF/SAIF.Services.WCF.UC4.Host/Web.config`
